cmake_minimum_required(VERSION 3.25)    #指定最小的CMake版本
project(StartCpp)   #项目名称

set(CMAKE_CXX_STANDARD 17)  #设置C++标准

add_executable(StartCpp main.cpp)   #添加可执行编译，编译为StartCpp.exe(windows) g++ -o StartCpp main.cpp
add_executable(test test.cpp)
add_executable(record record.cpp)

#primer
add_executable(HelloWorld primer/HelloWorld.cpp)
add_executable(mathFunction primer/mathFunction.cpp)
add_executable(limits primer/limits.cpp)
add_executable(wType primer/wType.cpp)
add_executable(floatNum primer/floatNum.cpp)
add_executable(strings primer/strings.cpp)
add_executable(String primer/String.cpp)
add_executable(structCPP primer/structCPP.cpp)
add_executable(poiner primer/poiner.cpp)
add_executable(STL_Vector primer/STL_Vector.cpp)
add_executable(STL_Array primer/STL_Array.cpp)
add_executable(express primer/express.cpp)
add_executable(watting primer/watting.cpp)
add_executable(unionInstance primer/unionInstance.cpp)

#fileStream
add_executable(outfile fileStream/outfile.cpp)
add_executable(sumfile fileStream/sumfile.cpp)

#module
add_executable(protos modulePrimer/protos.cpp)
add_executable(arrobj modulePrimer/arrobj.cpp)
add_executable(fun_ptr modulePrimer/fun_ptr.cpp)
add_executable(arfupt modulePrimer/arfupt.cpp OOP/stockClass/stock00.cpp)
add_executable(filefunc modulePrimer/filefunc.cpp)
add_executable(funtemplate modulePrimer/funtemplate.cpp)
add_executable(twotemp modulePrimer/twotemp.cpp)
add_executable(twoswap modulePrimer/twoswap.cpp)
add_executable(decltypeTest modulePrimer/decltypeTest.cpp)
add_executable(external mulfile/external.cpp mulfile/support.cpp)
add_executable(newplace memory/newplace.cpp)
add_executable(usenmsp mulfile/namespace/usenmsp.cpp mulfile/namespace/namesp.cpp)

# OOP
add_executable(usestock0 OOP/stockClass/usestock0.cpp OOP/stockClass/stock00.cpp)
add_executable(usestock1 OOP/stockClass/usestock1.cpp OOP/stockClass/stock10.cpp)
add_executable(stacker OOP/stack/stacker.cpp OOP/stack/stack.cpp)
add_executable(useTime OOP/operator/useTime.cpp OOP/operator/mytime.cpp)
add_executable(randwalk OOP/Vec/randwalk.cpp OOP/Vec/vect.cpp)
add_executable(stonew OOP/operator/stonew.cpp)
add_executable(sayings OOP/string/sayings.cpp OOP/string/String.cpp)
add_executable(saying2 OOP/string/saying2.cpp OOP/string/String.cpp)
add_executable(bank OOP/queue/bank.cpp OOP/queue/Queue.cpp)
add_executable(tabtenn OOP/tabtenn.cpp)
add_executable(usebrass OOP/brass/usebrass.cpp OOP/brass/brass.cpp)
add_executable(usebrass2 OOP/brass/usebrass2.cpp OOP/brass/brass.cpp OOP/brass/brass.h)
add_executable(use_stuc OOP/inherit/Student/use_stuc.cpp OOP/inherit/Student/studentc.cpp)
add_executable(use_stui OOP/inherit/Student/use_stui.cpp OOP/inherit/Student/studenti.cpp)
add_executable(workmi OOP/inherit/worker/workmi.cpp OOP/inherit/worker/workermi.cpp)

# Template
add_executable(twod template/twod.cpp)
add_executable(tempmemb template/tempmemb.cpp)
add_executable(tmp2tmp template/tmp2tmp.cpp)
add_executable(manyfrnd template/manyfrnd.cpp)

add_executable(use_tv mulfile/TV/use_tv.cpp mulfile/TV/tv.cpp)
add_executable(nested mulfile/nested.cpp)

# Exception
add_executable(error1 exception/error1.cpp)
add_executable(error2 exception/error2.cpp)
add_executable(error3 exception/error3.cpp)

add_executable(error4 exception/error4.cpp)
add_executable(error5 exception/error5.cpp)
add_executable(newexcp exception/newexcp.cpp)

add_executable(use_sales exception/use_sales.cpp exception/sales.cpp)

add_executable(rtti1 RTTI/rtti1.cpp)
add_executable(rtti2 RTTI/rtti2.cpp)
add_executable(constcast RTTI/constcast.cpp)
add_executable(strfile fileStream/strfile.cpp)
add_executable(hangman STL/string/hangman.cpp)
add_executable(str2 STL/string/str2.cpp)
add_executable(smrtptrs STL/auto_ptr/smrtptrs.cpp)
add_executable(vect1 STL/vect1.cpp)
add_executable(vect2 STL/vect2.cpp)
add_executable(vect3 STL/vect3.cpp)
add_executable(copyit STL/copyit.cpp)
add_executable(inserts STL/inserts.cpp)
add_executable(list STL/list.cpp)
add_executable(setops STL/algorithm/setops.cpp)
add_executable(multmap STL/multmap.cpp)
add_executable(functor STL/functor.cpp)
add_executable(funadap STL/funadap.cpp)
add_executable(stgst1 STL/algorithm/stgst1.cpp)
add_executable(listrmv STL/listrmv.cpp)
add_executable(usealgo STL/algorithm/usealgo.cpp)
add_executable(valvect STL/valvect.cpp)
add_executable(vslice STL/vslice.cpp)
add_executable(ilist STL/ilist.cpp)
add_executable(write IOStream/write.cpp)
add_executable(fill IOStream/fill.cpp)
add_executable(showpt IOStream/showpt.cpp)
add_executable(setf IOStream/setf.cpp)
add_executable(setf2 IOStream/setf2.cpp)
add_executable(iomanip IOStream/iomanip.cpp)
add_executable(cinexcp IOStream/cinexcp.cpp)
add_executable(get_fun IOStream/get_fun.cpp)
add_executable(peeker IOStream/peeker.cpp)
add_executable(fileio IOStream/fileio.cpp)
add_executable(count IOStream/count.cpp)
add_executable(append IOStream/append.cpp)
add_executable(binary IOStream/binary.cpp)
add_executable(random IOStream/random.cpp)
add_executable(tempfile fileStream/tempfile.cpp)
add_executable(strout IOStream/strout.cpp)
add_executable(strin IOStream/strin.cpp)
add_executable(rvref C++11/rvref.cpp)
add_executable(useless C++11/useless.cpp)
add_executable(stdmove C++11/stdmove.cpp)
add_executable(lambda C++11/lambda.cpp)
add_executable(variadic C++11/variadic.cpp)